Packet data networks are generally built on a multi-layer communication model, such as the Open Systems Interconnection (OSI) model. The lowest layer in the model, referred to as Layer 1, is the physical layer (PHY), in which a transmitter transmits a raw bit stream over a physical medium to a receiver. The next layer (Layer 2) is the data link layer, which provides a protocol for reliable transmission of data frames, also referred to as packets, between two nodes connected by a physical layer. Common data link layer protocols include Ethernet and InfiniBand Layer 2.
In many networks, error detection and/or error correction capabilities are built into both the Layer 1 and Layer 2 protocols. For example, the Layer 1 protocol may provide for forward error correction (FEC), in which redundant bits are added to the data stream by the transmitter and can then be used by the receiver in detecting and correcting bit errors. Many FEC schemes use block codes, such as Reed-Solomon, BCH, parity, or Hamming codes. In Layer 2 protocols, the transmitter typically incorporates a cyclic redundancy code (CRC) into a field of each packet, generally the packet footer. The receiver computes the CRC of each incoming packet and compares the result to the CRC field in the packet footer in order to identify “bad packets,” in which errors have occurred.